home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / g_man / cat3 / OpenGL / glnormalpointerext.z / glnormalpointerext
Encoding:
Text File  |  2001-04-17  |  15.6 KB  |  199 lines

  1.  
  2.  
  3.  
  4. ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT((((3333GGGG))))         OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee         ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT((((3333GGGG))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT - define a array of normals
  10.  
  11.  
  12. CCCC SSSSPPPPEEEECCCCIIIIFFFFIIIICCCCAAAATTTTIIIIOOOONNNN
  13.      void ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT( GLenum _t_y_p_e,
  14.                               GLsizei _s_t_r_i_d_e,
  15.                               GLsizei _c_o_u_n_t,
  16.                               const GLvoid *_p_o_i_n_t_e_r )
  17.  
  18.  
  19. PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
  20.      _t_y_p_e     Specifies the the data type of each coordinate in the array.
  21.               Symbolic constants GGGGLLLL____BBBBYYYYTTTTEEEE, GGGGLLLL____SSSSHHHHOOOORRRRTTTT, GGGGLLLL____IIIINNNNTTTT, GGGGLLLL____FFFFLLLLOOOOAAAATTTT, or
  22.               GGGGLLLL____DDDDOOOOUUUUBBBBLLLLEEEE____EEEEXXXXTTTT are accepted.
  23.  
  24.      _s_t_r_i_d_e   Specifies the byte offset between consecutive normals.
  25.  
  26.      _c_o_u_n_t    Specifies the number of normals, counting from the first, that
  27.               are static.
  28.  
  29.      _p_o_i_n_t_e_r  Specifies a pointer to the first coordinate of the first normal
  30.               in the array.
  31.  
  32.  
  33. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  34.      ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT specifies the location and data format of an array of
  35.      normals to use when rendering using the vertex array extension.  _t_y_p_e
  36.      specifies the data type of the normal coordinates and _s_t_r_i_d_e gives the
  37.      byte stride from one normal to the next allowing vertexes and attributes
  38.      to be packed into a single array or stored in separate arrays.  (Single-
  39.      array storage may be more efficient on some implementations.)  _c_o_u_n_t
  40.      indicates the number of array elements (counting from the first) that are
  41.      static. Static elements may be modified by the application, but once they
  42.      are modified, the application must explicitly respecify the array before
  43.      using it for any rendering. When a normal array is specified, _t_y_p_e,
  44.      _s_t_r_i_d_e, _c_o_u_n_t and _p_o_i_n_t_e_r are saved as client-side state, and static
  45.      array elements may be cached by the implementation.
  46.  
  47.      The normal array is enabled and disabled using ggggllllEEEEnnnnaaaabbbblllleeee and ggggllllDDDDiiiissssaaaabbbblllleeee
  48.      with the argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT. If enabled, the normal array is
  49.      used when ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssssEEEEXXXXTTTT or ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnnttttEEEEXXXXTTTT is called.
  50.  
  51.      Use ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssssEEEEXXXXTTTT to define a sequence of primitives (all of the same
  52.      type) from pre-specified vertex and vertex attribute arrays.  Use
  53.      ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnnttttEEEEXXXXTTTT to specify primitives by indexing vertexes and vertex
  54.      attributes.
  55.  
  56. NNNNOOOOTTTTEEEESSSS
  57.      Non-static array elements are not accessed until ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnnttttEEEEXXXXTTTT or
  58.      ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssssEEEEXXXXTTTT is executed.
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT((((3333GGGG))))         OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee         ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT((((3333GGGG))))
  71.  
  72.  
  73.  
  74.      By default the normal array is disabled and it won't be accessed when
  75.      ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnnttttEEEEXXXXTTTT or ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssssEEEEXXXXTTTT is called.
  76.  
  77.  
  78.      Although it is not an error to call ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT between the
  79.      execution of ggggllllBBBBeeeeggggiiiinnnn and the corresponding execution of ggggllllEEEEnnnndddd, the
  80.      results are undefined.
  81.  
  82.  
  83.      ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT will typically be implemented on the client side with
  84.      no protocol.
  85.  
  86.  
  87.      Since the normal array parameters are client side state, they are not
  88.      saved or restored by ggggllllPPPPuuuusssshhhhAAAAttttttttrrrriiiibbbb and ggggllllPPPPooooppppAAAAttttttttrrrriiiibbbb.
  89.  
  90.  
  91.      ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT commands are not entered into display lists.
  92.  
  93.  
  94.      ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT is part of the EEEEXXXXTTTT____vvvveeeerrrrtttteeeexxxx____aaaarrrrrrrraaaayyyy extension, not part of
  95.      the core GL command set. If GGGGLLLL____EEEEXXXXTTTT____vvvveeeerrrrtttteeeexxxx____aaaarrrrrrrraaaayyyy is included in the string
  96.      returned by ggggllllGGGGeeeettttSSSSttttrrrriiiinnnngggg, when called with argument GGGGLLLL____EEEEXXXXTTTTEEEENNNNSSSSIIIIOOOONNNNSSSS,
  97.      extension EEEEXXXXTTTT____vvvveeeerrrrtttteeeexxxx____aaaarrrrrrrraaaayyyy is supported.
  98.  
  99. EEEERRRRRRRROOOORRRRSSSS
  100.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____EEEENNNNUUUUMMMM is generated if _t_y_p_e is not an accepted value.
  101.  
  102.      GGGGLLLL____IIIINNNNVVVVAAAALLLLIIIIDDDD____VVVVAAAALLLLUUUUEEEE is generated if _s_t_r_i_d_e or _c_o_u_n_t is negative.
  103.  
  104.  
  105. AAAASSSSSSSSOOOOCCCCIIIIAAAATTTTEEEEDDDD GGGGEEEETTTTSSSS
  106.      ggggllllIIIIssssEEEEnnnnaaaabbbblllleeeedddd with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT
  107.      ggggllllGGGGeeeetttt with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____TTTTYYYYPPPPEEEE____EEEEXXXXTTTT
  108.      ggggllllGGGGeeeetttt with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____SSSSTTTTRRRRIIIIDDDDEEEE____EEEEXXXXTTTT
  109.      ggggllllGGGGeeeetttt with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____CCCCOOOOUUUUNNNNTTTT____EEEEXXXXTTTT
  110.      ggggllllGGGGeeeettttPPPPooooiiiinnnntttteeeerrrrvvvvEEEEXXXXTTTT with argument GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____PPPPOOOOIIIINNNNTTTTEEEERRRR____EEEEXXXXTTTT
  111.  
  112.  
  113. MMMMAAAACCCCHHHHIIIINNNNEEEE DDDDEEEEPPPPEEEENNNNDDDDEEEENNNNCCCCIIIIEEEESSSS
  114.      On RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee, RRRReeeeaaaalllliiiittttyyyyEEEEnnnnggggiiiinnnneeee2222, and VVVVTTTTXXXX systems, do not enable or
  115.      disable GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY, GGGGLLLL____VVVVEEEERRRRTTTTEEEEXXXX____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY,
  116.      GGGGLLLL____NNNNOOOORRRRMMMMAAAALLLL____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____CCCCOOOOLLLLOOOORRRR____AAAARRRRRRRRAAAAYYYY, GGGGLLLL____CCCCOOOOLLLLOOOORRRR____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT,
  117.      GGGGLLLL____IIIINNNNDDDDEEEEXXXX____AAAARRRRRRRRAAAAYYYY,GGGGLLLL____IIIINNNNDDDDEEEEXXXX____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOOOOORRRRDDDD____AAAARRRRRRRRAAAAYYYY,
  118.      GGGGLLLL____TTTTEEEEXXXXTTTTUUUURRRREEEE____CCCCOOOOOOOORRRRDDDD____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT, GGGGLLLL____EEEEDDDDGGGGEEEE____FFFFLLLLAAAAGGGG____AAAARRRRRRRRAAAAYYYY or GGGGLLLL____EEEEDDDDGGGGEEEE____FFFFLLLLAAAAGGGG____AAAARRRRRRRRAAAAYYYY____EEEEXXXXTTTT
  119.      between a call to ggggllllNNNNeeeewwwwLLLLiiiisssstttt and the corresponding call to ggggllllEEEEnnnnddddLLLLiiiisssstttt.
  120.      Instead, enable or disable before the call to ggggllllNNNNeeeewwwwLLLLiiiisssstttt.
  121.  
  122.      On IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems it is particularly important to minimize the
  123.      amount of data transferred from the application to the graphics pipe,
  124.      since the host-to-pipe bandwidth limit can cause a performance
  125.      bottleneck.  One way to reduce the amount of data transferred per vertex
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT((((3333GGGG))))         OOOOppppeeeennnnGGGGLLLL RRRReeeeffffeeeerrrreeeennnncccceeee         ggggllllNNNNoooorrrrmmmmaaaallllPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT((((3333GGGG))))
  137.  
  138.  
  139.  
  140.      is to use properly-aligned byte and short data types whenever possible.
  141.      Accordingly, the EEEEXXXXTTTT____vvvveeeerrrrtttteeeexxxx____aaaarrrrrrrraaaayyyy extension on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems
  142.      has been optimized for vertex information packed into the following data
  143.      structures.  (Note: v represents vertex coordinates, c represents color
  144.      components, n represents normal coordinates, and t represents texture
  145.      coordinates.  Normals must have unit length.)
  146.  
  147.           struct {GLfloat v[3];}
  148.           struct {GLubyte c[4]; GLfloat v[3];}
  149.           struct {GLshort n[3]; GLfloat v[3];}
  150.           struct {GLubyte c[4]; GLshort n[3]; GLfloat v[3];}
  151.           struct {GLshort t[2]; GLfloat v[3];}
  152.           struct {GLshort t[2]; GLubyte c[4]; GLfloat v[3];}
  153.           struct {GLshort t[2]; GLshort n[3]; GLfloat v[3];}
  154.           struct {GLshort t[2]; GLubyte c[4]; GLshort n[3]; GLfloat v[3];}
  155.           struct {GLfloat t[2]; GLfloat v[3];}
  156.           struct {GLfloat t[2]; GLubyte c[4]; GLfloat v[3];}
  157.           struct {GLfloat t[2]; GLshort n[3]; GLfloat v[3];}
  158.           struct {GLfloat t[2]; GLubyte c[4]; GLshort n[3]; GLfloat v[3];}
  159.  
  160.      Application-specific fields may be added to these structures, provided
  161.      that all the fields described above retain their relative order and word
  162.      alignment.
  163.  
  164.      An additional constraint applies when ggggllllTTTTeeeexxxxGGGGeeeennnn is being used.  The
  165.      implementation normally generates all four texture coordinates in
  166.      parallel, and must take special action to generate just a subset of the
  167.      four coordinates.  Therefore performance is best when none of the texture
  168.      coordinates are being generated, or when all of them are being generated.
  169.      For example, when using 2D texturing (generating s and t coordinates) it
  170.      will be faster to enable texture coordinate generation for the r and q
  171.      coordinates as well as s and t.  Choose a texture generation mode of
  172.      GGGGLLLL____OOOOBBBBJJJJEEEECCCCTTTT____LLLLIIIINNNNEEEEAAAARRRR and use the plane equations (0,0,0,0) and (0,0,0,1) for
  173.      r and q, respectively.
  174.  
  175.      Using these structures on IIIInnnnffffiiiinnnniiiitttteeeeRRRReeeeaaaalllliiiittttyyyy systems can improve performance
  176.      considerably, compared to structures in which all values are single-
  177.      precision floating point.
  178.  
  179.  
  180. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  181.      ggggllllAAAArrrrrrrraaaayyyyEEEElllleeeemmmmeeeennnnttttEEEEXXXXTTTT, ggggllllCCCCoooolllloooorrrrPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT, ggggllllDDDDrrrraaaawwwwAAAArrrrrrrraaaayyyyssssEEEEXXXXTTTT,
  182.      ggggllllEEEEddddggggeeeeFFFFllllaaaaggggPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT, ggggllllEEEEnnnnaaaabbbblllleeee, ggggllllGGGGeeeettttPPPPooooiiiinnnntttteeeerrrrvvvvEEEEXXXXTTTT, ggggllllIIIInnnnddddeeeexxxxPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT,
  183.      ggggllllTTTTeeeexxxxCCCCoooooooorrrrddddPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT, ggggllllVVVVeeeerrrrtttteeeexxxxPPPPooooiiiinnnntttteeeerrrrEEEEXXXXTTTT
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.